
package com.friendfeed.api;

import java.util.List;

public interface FriendFeedService {
    public static final String BAD_ID_FORMAT = "bad-id-format";
    public static final String BAD_URL_FORMAT = "bad-url-format";
    public static final String BODY_REQUIRED = "body-required";
    public static final String ENTRY_NOT_FOUND = "entry-not-found";
    public static final String ENTRY_REQUIRED = "entry-required";
    public static final String FEED_NOT_FOUND = "feed-not-found";
    public static final String FORBIDDEN = "forbidden";
    public static final String IMAGE_FORMAT_NOT_SUPPORTED = "image-format-not-supported";
    public static final String INTERNAL_SERVER_ERROR = "internal-server-error";
    public static final String LIMIT_EXCEEDED = "limit-exceeded";
    public static final String ROOM_NOT_FOUND = "room-not-found";
    public static final String ROOM_REQUIRED = "room-required";
    public static final String TITLE_REQUIRED = "title-required";
    public static final String UNAUTHORIZED = "unauthorized";
    public static final String USER_NOT_FOUND = "user-not-found";
    public static final String USER_REQUIRED = "user-required";
    public static final String ERROR = "error";


    void setPretty(boolean b);
    
    void setLocale(String loc);
    
    void setUseCompression(boolean b);
    
    void setService(String service);

    void setStart(int start);

    void setNum(int num);

    List<Entry> fetchPublicFeed();

    List<Entry> fetchUserFeed(String nickname);

    List<Entry> fetchUsersFriendsFeed(String nickname);
    
    List<Entry> fetchHomeFeed();

    List<Entry> fetchUserComments();

    FeedInfo fetchFeedInfo(String feedname);

    void addLike(String entryId);

    void deleteLike(String entryId);

    void addComment(String entryId, String body);

    List<Entry> fetchEntryById(String... id);

    List<Entry> fetchMultiUserFeed(String... nicknames);

    List<Entry> fetchMultiUserFeed(List<String> nicknames);

    void hide(String id);

    void unhide(String id);

    List<Entry> search(String searchTerms);
    
    List<Entry> fetchRoomFeed(String roomNickname);
    
    byte[] fetch(Thumbnail tnail);
    
    byte[] fetchProfilePicture(String user, Size sz);

	byte[] fetchRoomPicture(String roomName, Size sz);

    void updateProfilePicture(String user, java.io.InputStream image);

	Entry publish(Entry newEntry);

	Entry publish(String body);
	
	Entry publishLink(String description, String link /* URL */);
	
	Comment publishComment(String entryId, String commentText);

	Entry publishImageUrl(String imageUrl, String body);
	
}
